collection
是java中一種容器,用來存放資料,並且只能夠儲存object
的資料(存放基本類型
時會自動轉換成包裝類
),是屬於接口
而非類
,放在java.util.Collection
中。
當中主要包含了兩個分類:
array
很像,可以存放有序、可重複的資料結構List中有三個常用實作類
array
,但是可以把它當成動態
的array,當新增長度不夠時,底層
會自動擴充長度,因為有index
適用於查詢
元素。(原本多寫了適用於新增
,感謝Chikuwa告知,已修正)插入
、刪除
元素。List
類,後來在jdk5.0後新增了List
、ArrayList
後,把它納入List
底下,基本上已經很少使用此類。Collection
中常用主要使用的方法
使用ArrayList
作為範例
新增元素:add(Object obj)
、addAll(Collection other)
Collection coll = new ArrayList();
coll.add("ABC");
coll.add("DEF");
coll.add(123);
System.out.println(coll); //[ABC, DEF, 123]
Collection coll2 = new ArrayList();
coll2.add("abc");
coll2.add(456);
coll.add(coll2);
coll.addAll(coll2);
System.out.println(coll); //[ABC, DEF, 123, [abc, 456], abc, 456]
使用add()
時,會將參數的物件
當成一個
元素放加入ArrayList
,使用addAll()
時,會將參數集合
中的每一個元素個別加入
長度:int size()
coll.size(); // 6
是否為空:boolean isEmpty()
coll.isEmpty(); // false
是否包含某個物件:boolean contains(Object obj)
是否包含某個集合:boolean containsAll(Collection coll)
是否和某個物件相等:boolean equals(Object obj)
coll.contains("ABC"); // true
coll.contains(888); // false
coll.containsAll(coll2); // true;
使用自定義的類時,要特別注意需要將Object
類中的equals()
方法重寫,預設是使用Object類
中的equals()
進行比較,裡面只是使用==
進行比較,若沒有重寫equals()
,只會使用記憶體中的地址進行比較。
清空:void clear()
coll.clear();
System.out.println(coll); // []
刪除:boolean remove(Object obj)
、boolean removeAll(Collection coll)
coll.remove("ABC");
System.out.println(coll); // [DEF, 123]
將有交集的集合保留,其餘刪除:boolean retainsAll(Collection coll)
coll.retainsAll(coll2);
System.out.println(coll); //[abc, 456]
如果放入的集合完全沒有交集時,則會把原本的集合清空
將集合變成陣列:Object toArray()
Object[] arr = coll.toArray();
System.out.println(Arrays.toString(arr); // [ABC, DEF, 123]
集合的迭代器
Iterator iterator = coll.iterator();
是否有下一個元素:boolean hasNext()
將集合中的第一個元素提取出來:Object next()
iterator.hasNext(); // true
iterator.next(); // ABC
// 對集合的每個元素進行操作
while(iterator.hasNext()) {
System.out.println(iterator.next()); // 依次將coll的元素印出
}
Hi,文中提到「ArrayList 因為有 index,適用於新增元素」,感覺不太對喔
因為如果你透過 index,在陣列的「中間」新增元素,那插入點後方的「所有」元素就必須往後面的位置搬移,會有這樣子的成本~
是的,原本想表達的是在最後面新增元素~~~ 但好像沒有必要XD
已將內文修正,並備註你的名字,非常感謝你的回覆和分享~~~